export default{
  //为当前模块开启命名空间
  namespaced:true,

//模块的state数据
state:()=>({
  //购物车的数组，用来存储购物车中每个商品的信息对象
  //每个商品的信息对象，都包含如下6个属性：
  //{goods_id,goods_name,goods_price,goods_count,goods_small_logo,goods_state}
  cart:JSON.parse(uni.getStorageSync('cart')||'[]')
}),
//模块的mutations方法
mutations: {
  addToCart(state,goods){
  //根据提交的商品id，查询购物车中是否存在这件商品
  //如果不存在，则findResult为undefined；否则，为查到的商品信息对象
  const findResult = state.cart.find((x)=>x.goods_id === goods.goods_id)
  if(!findResult){
    //如果购物车没有这件商品，则直接push
    state.cart.push(goods)
  }else{
    //如果有这件商品，则只更新数量即可
    findResult.goods_count++
  }
  //通过commit方法,调用m_cart命名空间下的saveToStorage方法
  this.commit('m_cart/saveToStorage')
  },
  saveToStorage(state){
    uni.setStorageSync('cart',JSON.stringify(state.cart))
  },
  updateGoodsState(state,goods){
    //根据goods_id查询购物车中对应商品的信息对象
    const findResult = state.cart.find(x=>x.good_id === goods.goods_id)
    //有对应的商品信息对象
    if(findResult){
      findResult.goods_state = goods.goods_state
      //持久化存储到本地
      this.commit('m_cart/saveToStorage')
    }
  },
  // 更新商品数量
  updateGoodsCount(state,goods){
   const findResult = state.cart.find(x=>x.gooods_id === goods.goods_id)
   if(findResult){
     //更新对应的商品数量
     findResult.goods_count = goods.goods_count
     //持久化存储到本地
     this.commit('m_cart/saveToStorage')
   }
  },
  removeGoodsById(state,goods_id){
    state.cart = state.cart.filter(x=>x.good_id !== goods_id)
    this.commit('m_cart/saveToStorage')
  }
},
//模块的getters属性
getters:{
  //购物车中所以商品的总数量
  total(state){
  //   let c = 0
  //   //循环统计商品的数量，累加到变量c中
  //   state.cart.forEach(goods=> c += goods.goods_count)
  //   return c
  // },
  return state.cart.reduce((total,item)=>total += item.goods_count,0)
  },
  //已勾选商品的数量
  checkedConunt(state){
   return state.cart.filter(x=>x.goods_state).reduce((total,item)=>total += item.goods_count,0)
  }
},
}
